package server

import (
	"embed"
	_ "embed"
	"flag"
	"github.com/gin-gonic/gin"
	"html/template"
	"io/fs"
	"net/http"
)

//go:embed "web/output"
var static embed.FS

var debug = flag.Bool("debug", false, `running in "debug" mode`)

func InitServer() {
	if !*debug {
		gin.SetMode(gin.ReleaseMode)
	}
	r := gin.New()
	r.Delims(`{%`, `%}`)

	t, _ := template.New("").Delims(`{%`, `%}`).ParseFS(static, "web/output/*.html")
	//更改了delims后，加载模板时必须类似这样做，否则parse时会解析里面的{{模版内容，可能会出错
	r.SetHTMLTemplate(t)

	fe, _ := fs.Sub(static, "web/output/static")
	r.StaticFS(`/static`, http.FS(fe))

	r.GET(`/`, index)
	//server := &http.Server{
	//	Addr:    `:9098`,
	//	Handler: r,
	//}

	//开始监听（监听一般为":port"以便监听所有本地地址）
	go func() {
		//if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
		//
		//}
		r.Run(`:9098`)
	}()
	println(`程序已启动，请在浏览器打开 http://localhost:9098/ 以访问。`)
	println(`如在服务器运行此程序，建议使用supervisor或docker等程序保证程序持久运行。`)
}
